/*
 * libFSClient.c
 *
 *  Created on: 22/04/2012
 *      Author: utnso
 */

#include "libFSClient.h"

uint8_t iniciarPrograma(archConfig_t* archConfig) {

	uint8_t error = 0;
	inicializarPathLogueo("/home/utnso/Escritorio/FSClient.log");
	error = leerArchivoConfiguracion(archConfig);
	if(!error){
		inicializarDatosSockets(archConfig->IP, archConfig->puerto, archConfig->cantConexiones);
		inicializarPoolConexiones();
		inicializarNivelLogueo(archConfig->nivelLog);

		signal(SIGINT, finalizacion);
		signal(SIGKILL, finalizacion);
	}

	return error;
}

void ejecutarPrograma(archConfig_t archConfig, int32_t argc ,char** argv) {

	int32_t resultadoFUSE = 0;
    //pthread_t tid;
    argFUSE_t argFUSE;
    argFUSE.argc = argc;
    argFUSE.argv = (char**) malloc((argc + 1) * sizeof(char*));
    uint8_t i;
    for (i = 0; argv[i]; i++) {
    	argFUSE.argv[i] = (char*) malloc(strlen(argv[i]) + 1);
    	memset(argFUSE.argv[i], '\0', strlen(argv[i]) + 1);
        strcpy(argFUSE.argv[i], argv[i]);
        }
    argFUSE.argv[i] = NULL;
    argFUSE.res = &resultadoFUSE;
    //pthread_create(&tid, NULL, (void*) &iniciarFUSE, (void*) &argFUSE);
	return;
}

void finalizarPrograma(archConfig_t archConfig){
	free(archConfig.IP);
	finalizacion(0);
}

void finalizacion(int32_t signal){
	cerrarArchivoLog();
	finalizarPoolConexiones();
	finalizarDatosSockets();
}
